/*

call()  它允许你调用一个函数，并将上下文（this 值）设置为指定的对象。这个方法的主要用途是让某个函数运行在特定的上下文环境中
apply()  apply 方法与 call 方法类似，也是用来调用一个函数，并将上下文（this 值）设置为指定的对象。不同的是，apply 方法接受一个参数数组，而不是多个参数列表。
bind()  bind 方法用于创建一个新的函数，这个新函数在调用时，其 this 值被设置为 bind 方法的第一个参数，而其余参数将作为新函数的参数，跟随 bind 方法的参数列表，依次传递给原函数。


 */

function a(c, d){
    return this.name + c + d
}
let student = {"name": "jack"}
/**
 * 使用call来执行 a函数
 */
// console.log(a.call(student, " ma", " hello "))


/*
使用 apply来执行 a方法
 */
// console.log(a.apply(student, [" ma", " hello "]))


/*

使用bind 来执行 a方法
 */

let res = a.bind(student, " ma", "hello")
console.log(res())